Database applications are commonly used to store large amounts of data. One branch of database applications that is growing in popularity is Online Analytical Processing (OLAP) applications. This typically involves designing databases for fast access. Using specialized indexing techniques, it processes queries that may pertain to large amounts of data and multidimensional databases much faster than traditional techniques.
Typically, a multidimensional database stores and organizes data in a way that better reflects how a user would want to view the data than is possible in a two-dimensional spreadsheet or relational database file. Multidimensional databases are generally better suited to handle applications with large volumes of numeric data and that require calculations on numeric data, such as business analysis and forecasting, although they are not limited to such applications.
A dimension within multidimensional data is typically a basic categorical definition of data. Other dimensions in the database allow a user to analyze a large volume of data from many different viewpoints or perspectives. Thus, a dimension can also be described as a perspective or view of a specific dataset. A different view of the same data is referred to as an alternative dimension.
There are typically two types of data stored in a mutidimensional database. The first type of data includes measures. These measures are typically purely quantitative values and, taking an example of a supermarket chain, may cover such things as sales, profit, expenses, inventory, etc. The second type of data includes properties. Each measure typically has several properties associated with it. For example, location, month, product types are all properties that may be associated with sales. Thus, a user may wish to view all sales in the month of July. Or may want to view all sales of produce in the month of June in California.
Additionally, each of the dimensions may have a hierarchy to it that more accurately groups the data. For example, there are 365 days in a year, but while sales data may be updated daily and thus may contain different entries for each day of the year, it is unlikely that a user would want to view sales data for a particular day as most users are looking for trends. Thus, a “time” attributes containing 365 days may actually be hierarchically grouped into larger sets, such as weeks, months, years, etc. Likewise a product hierarchy may be grouped into dairy, produce, meats, etc. This allows a user to search first based on broad groupings, then narrow in and focus the search on more granularized data. For example, the user may first find that sales of produce were down for the previous year. He then may search based on month and narrow it to October being a particularly bad month. He may then search further down in the produce grouping and find that apple sales were poor that month.
The problem with this type of multidimensional searching is that it requires a great deal of processing power when getting down to the lower levels of the hierarchy, and accordingly can be slow. The processing power must be spent organizing and reorganizing the data each time a search is performed. While the hierarchical categories can be set up as a predictor of likely reports groupings and thus speed the process at higher levels, at lower levels it is difficult to predict what data the user may request and thus response times can be fairly slow.